home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fritz: All Fritz
/
All Fritz.zip
/
All Fritz
/
FILES
/
PROGASIC
/
DATASCRN.LZH
/
DATASCRN.BAS
next >
Wrap
BASIC Source File
|
1987-09-10
|
3KB
|
133 lines
'***** DATASCRN.BAS *****
' J.P.Davis - 9/10/87
%max=100
DIM var#(1:%max),row%(1:%max),col%(1:%max),l$(1:24)
CLS:SCREEN 0:COLOR 14:LOCATE 1,1,1
INPUT "Screen Filespec...";nam$
CLS
OPEN nam$ FOR INPUT as #1
DO
INCR r%
LINE INPUT #1,l$(r%)
PRINT l$(r%)
DO
c%=INSTR(c%+1,l$(r%),":")
IF c% THEN k%=k%+1:row%(k%)=r%:col%(k%)=c%
LOOP UNTIL c%=0
LOOP UNTIL eof(1)
CLOSE #1
rmax%=r%:kmax%=k%
ON ERROR GOTO handler
RESTORE
FOR i%=1 TO kmax%
READ vv#
var#(i%)=vv#
LOCATE row%(i%),col%(i%)+1
PRINT fnp$(var#(i%))
NEXT i%
begin:
CALL editor
GOTO calc
SUB editor
SHARED k%,kmax%,row%(),col%(),var#()
LOCATE 24,1:PRINT "Make revisions - Press <ESC> when done...";
k%=1:LOCATE row%(k%),col%(k%)+1
DO
row%=csrlin:col%=pos(0)
j%=col%
WHILE not INSTAT
WEND
a$=INKEY$
IF len(a$)=2 THEN
SELECT CASE asc(right$(a$,1))
CASE 72
IF k%=1 THEN k%=kmax% ELSE k%=k%-1
LOCATE row%(k%),col%(k%)+1
CASE 80
IF k%<kmax% THEN k%=k%+1 ELSE k%=1
LOCATE row%(k%),col%(k%)+1
CASE 75
IF col%=col%(k%)+1 THEN col%=col%(k%)+2
LOCATE ,col%-1
CASE 77
IF col%=79 THEN col%=78
LOCATE ,col%+1
CASE 71
k%=1
LOCATE row%(k%),col%(k%)+1
CASE 79
k%=kmax%
LOCATE row%(k%),col%(k%)+1
CASE ELSE
END SELECT
ELSE
SELECT CASE asc(a$)
CASE 32,40 TO 57,68,69,100,101
PRINT a$;
DO
INCR j%
IF SCREEN(row%,j%)<>32 THEN PRINT " ";
LOOP UNTIL SCREEN(row%,j%+1)=32
LOCATE row%,col%+1
CASE 8
LOCATE ,col%-1
PRINT " ";
LOCATE ,col%-1
CASE ELSE
END SELECT
END IF
LOOP UNTIL a$=chr$(27)
FOR k%=1 TO kmax%
s$=""
FOR c%=col%(k%)+1 TO 79
a%=SCREEN(row%(k%),c%)
c$=chr$(a%)
s$=s$+c$
NEXT c%
var#(k%)=val(s$)
NEXT k%
LOCATE 24,1:PRINT space$(79);
COLOR 13:LOCATE 24,1:PRINT "Press any key to begin calculation...";:COLOR 14
WHILE not INSTAT
WEND
END SUB
SUB show
SHARED l$(),var#(),row%(),col%(),rmax%,kmax%
CLS
FOR r%=1 TO rmax%
PRINT l$(r%)
NEXT r%
FOR k%=1 TO kmax%
LOCATE row%(k%),col%(k%)+1
PRINT fnp$(var#(k%))
NEXT k%
LOCATE row%(1),col%(1)+1
END SUB
DEF fnp$(x)
IF x=0 THEN
PRINT x;
ELSEIF abs(x)>1E6 THEN
PRINT USING "-#.#####^^^^";x;
ELSE
PRINT int(x*(10^(5-int(log10(abs(x)))))+.5)/(10^(5-int(log10(abs(x)))));
END IF
fnp$=""
END DEF
handler:
RESUME begin
calc:
ON ERROR GOTO 0
CLS
' Main program starts here...